home *** CD-ROM | disk | FTP | other *** search
/ CD ROM Paradise Collection 4 / CD ROM Paradise Collection 4 1995 Nov.iso / games_d / rtankasm.zip / SCREEN1.ASM < prev    next >
Assembly Source File  |  1989-03-01  |  25KB  |  764 lines

  1.  
  2.                 ASSUME          cs:_TEXT, DS:SEPDATA
  3.  
  4. SEPDATA         SEGMENT WORD 'DATA'
  5.  
  6.                 public map, lmapX, lmapY, pmapX, pmapY, imagelist
  7.                 public notile,corner,allwhite, allblue
  8.                 public allred,road,grass,overwrite
  9.  
  10. ; Tiles to draw
  11. overwrite       db              123
  12. notile          db              000h, 000h, 000h, 000h
  13.                 db              000h, 000h, 000h, 000h
  14.                 db              000h, 000h, 000h, 000h
  15.                 db              000h, 000h, 000h, 000h
  16.  
  17. corner          db              055h, 055h, 040h, 000h
  18.                 db              040h, 000h, 040h, 000h
  19.                 db              040h, 000h, 040h, 000h
  20.                 db              040h, 000h, 040h, 000h
  21.  
  22. allwhite        db              0FFh, 0FFh, 0FFh, 0FFh
  23.                 db              0FFh, 0FFh, 0FFh, 0FFh
  24.                 db              0FFh, 0FFh, 0FFh, 0FFh
  25.                 db              0FFh, 0FFh, 0FFh, 0FFh
  26.  
  27. allblue         db              055h, 055h, 055h, 055h
  28.                 db              055h, 055h, 055h, 055h
  29.                 db              055h, 055h, 055h, 055h
  30.                 db              055h, 055h, 055h, 055h
  31.  
  32. allred          db              0AAh, 0AAh, 0AAh, 0AAh
  33.                 db              0AAh, 0AAh, 0AAh, 0AAh
  34.                 db              0AAh, 0AAh, 0AAh, 0AAh
  35.                 db              0AAh, 0AAh, 0AAh, 0AAh
  36.  
  37. road            db              000h, 000h, 000h, 000h
  38.                 db              003h, 0C0h, 000h, 000h
  39.                 db              000h, 000h, 003h, 0C0h
  40.                 db              000h, 000h, 000h, 000h
  41.  
  42. grass           db              055h, 055h, 0DDh, 055h
  43.                 db              055h, 055h, 057h, 075h
  44.                 db              075h, 055h, 057h, 055h
  45.                 db              055h, 055h, 055h, 0D5h
  46.  
  47. swamp           db              055h, 055h, 0CCh, 055h
  48.                 db              055h, 055h, 053h, 035h
  49.                 db              035h, 055h, 053h, 055h
  50.                 db              055h, 055h, 055h, 0C5h
  51.  
  52. include brick.asm
  53. include tree11.asm
  54. include tree12.asm
  55. include tree13.asm
  56. include tree21.asm
  57. include tree22.asm
  58. include tree23.asm
  59. include tree31.asm
  60. include tree32.asm
  61. include tree33.asm
  62. include smtree.asm
  63. include dead1a.asm
  64. include dead1b.asm
  65. include dead1c.asm
  66. include dead1d.asm
  67.  
  68. include rocket1.asm
  69. include rocket2.asm
  70. include rocket3.asm
  71. include rocket4.asm
  72. include rocket5.asm
  73. include rocket6.asm
  74. include rocket7.asm
  75. include rocket8.asm
  76. include shot84.asm
  77. include cannonbl.asm
  78. include mach8.asm
  79. include mach16.asm
  80. include laser15.asm
  81. include laser26.asm
  82. include laser37.asm
  83. include laser48.asm
  84.  
  85. include boom1.asm
  86. include boom2.asm
  87. include boom3.asm
  88. include boom4.asm
  89. include booma1.asm
  90. include booma2.asm
  91. include booma3.asm
  92. include booma4.asm
  93.  
  94. include tank1d2a.asm
  95. include tank1d2b.asm
  96. include tank1d2c.asm
  97. include tank1d2d.asm
  98. include tank1d4a.asm
  99. include tank1d4b.asm
  100. include tank1d4c.asm
  101. include tank1d4d.asm
  102. include tank1d6a.asm
  103. include tank1d6b.asm
  104. include tank1d6c.asm
  105. include tank1d6d.asm
  106. include tank1d8a.asm
  107. include tank1d8b.asm
  108. include tank1d8c.asm
  109. include tank1d8d.asm
  110. include tank11a.asm
  111. include tank11b.asm
  112. include tank11c.asm
  113. include tank11d.asm
  114. include tank13a.asm
  115. include tank13b.asm
  116. include tank13c.asm
  117. include tank13d.asm
  118. include tank15a.asm
  119. include tank15b.asm
  120. include tank15c.asm
  121. include tank15d.asm
  122. include tank17a.asm
  123. include tank17b.asm
  124. include tank17c.asm
  125. include tank17d.asm
  126. include tank21a.asm
  127. include tank21b.asm
  128. include tank21c.asm
  129. include tank21d.asm
  130. include tank23a.asm
  131. include tank23b.asm
  132. include tank23c.asm
  133. include tank23d.asm
  134. include tank25a.asm
  135. include tank25b.asm
  136. include tank25c.asm
  137. include tank25d.asm
  138. include tank27a.asm
  139. include tank27b.asm
  140. include tank27c.asm
  141. include tank27d.asm
  142. include tank22a.asm
  143. include tank22b.asm
  144. include tank22c.asm
  145. include tank22d.asm
  146. include tank24a.asm
  147. include tank24b.asm
  148. include tank24c.asm
  149. include tank24d.asm
  150. include tank26a.asm
  151. include tank26b.asm
  152. include tank26c.asm
  153. include tank26d.asm
  154. include tank28a.asm
  155. include tank28b.asm
  156. include tank28c.asm
  157. include tank28d.asm
  158.  
  159. include tank31a.asm
  160. include tank31b.asm
  161. include tank31c.asm
  162. include tank31d.asm
  163. include tank33a.asm
  164. include tank33b.asm
  165. include tank33c.asm
  166. include tank33d.asm
  167. include tank35a.asm
  168. include tank35b.asm
  169. include tank35c.asm
  170. include tank35d.asm
  171. include tank37a.asm
  172. include tank37b.asm
  173. include tank37c.asm
  174. include tank37d.asm
  175. include tank32a.asm
  176. include tank32b.asm
  177. include tank32c.asm
  178. include tank32d.asm
  179. include tank34a.asm
  180. include tank34b.asm
  181. include tank34c.asm
  182. include tank34d.asm
  183. include tank36a.asm
  184. include tank36b.asm
  185. include tank36c.asm
  186. include tank36d.asm
  187. include tank38a.asm
  188. include tank38b.asm
  189. include tank38c.asm
  190. include tank38d.asm
  191.  
  192. imagelist       dw              notile      ; pointers to images
  193.                 dw              corner
  194.                 dw              allwhite
  195.                 dw              allblue
  196.                 dw              allred
  197.                 dw              road
  198.                 dw              grass
  199.                 dw              swamp
  200.  
  201.                 dw              brick
  202.                 dw              notile    ; unused
  203.                 dw              notile    ; unused
  204.                 dw              dead1a
  205.                 dw              dead1b
  206.                 dw              dead1c
  207.                 dw              dead1d
  208.                 dw              tree11
  209.                 dw              tree12
  210.                 dw              tree13
  211.                 dw              tree21
  212.                 dw              tree22 ; ---
  213.                 dw              tree23
  214.                 dw              tree31
  215.                 dw              tree32
  216.                 dw              tree33
  217.  
  218.                 dw              smtree
  219.  
  220.                 dw              cannonbl
  221.                 dw              rocket1
  222.                 dw              rocket2
  223.                 dw              rocket3
  224.                 dw              rocket4
  225.  
  226.                 dw              rocket5
  227.                 dw              rocket6
  228.                 dw              rocket7
  229.                 dw              rocket8
  230.                 dw              mach8
  231.  
  232.                 dw              mach16
  233.                 dw              laser15
  234.                 dw              laser26
  235.                 dw              laser37
  236.                 dw              laser48
  237.  
  238.                 dw              tank1d8a
  239.                 dw              tank1d8b
  240.                 dw              tank1d8c
  241.                 dw              tank1d8d
  242.                 dw              tank1d2a
  243.                 dw              tank1d2b
  244.                 dw              tank1d2c
  245.                 dw              tank1d2d
  246.                 dw              tank1d4a
  247.                 dw              tank1d4b
  248.                 dw              tank1d4c
  249.                 dw              tank1d4d
  250.                 dw              tank1d6a
  251.                 dw              tank1d6b
  252.                 dw              tank1d6c
  253.                 dw              tank1d6d
  254.                 dw              tank11a
  255.                 dw              tank11b
  256.                 dw              tank11c
  257.                 dw              tank11d
  258.                 dw              tank13a
  259.                 dw              tank13b
  260.                 dw              tank13c
  261.                 dw              tank13d
  262.                 dw              tank15a
  263.                 dw              tank15b
  264.                 dw              tank15c
  265.                 dw              tank15d
  266.                 dw              tank17a
  267.                 dw              tank17b
  268.                 dw              tank17c
  269.                 dw              tank17d
  270.  
  271.                 dw              boom1
  272.                 dw              boom2
  273.                 dw              boom3
  274.                 dw              boom4
  275.                 dw              booma1
  276.                 dw              booma2
  277.                 dw              booma3
  278.                 dw              booma4
  279.  
  280.                 dw              tank21a
  281.                 dw              tank21b
  282.                 dw              tank21c
  283.                 dw              tank21d
  284.                 dw              tank23a
  285.                 dw              tank23b
  286.                 dw              tank23c
  287.                 dw              tank23d
  288.                 dw              tank25a
  289.                 dw              tank25b
  290.                 dw              tank25c
  291.                 dw              tank25d
  292.                 dw              tank27a
  293.                 dw              tank27b
  294.                 dw              tank27c
  295.                 dw              tank27d
  296.                 dw              tank22a
  297.                 dw              tank22b
  298.                 dw              tank22c
  299.                 dw              tank22d
  300.                 dw              tank24a
  301.                 dw              tank24b
  302.                 dw              tank24c
  303.                 dw              tank24d
  304.                 dw              tank26a
  305.                 dw              tank26b
  306.                 dw              tank26c
  307.                 dw              tank26d
  308.                 dw              tank28a
  309.                 dw              tank28b
  310.                 dw              tank28c
  311.                 dw              tank28d
  312.  
  313.                 dw              tank31a
  314.                 dw              tank31b
  315.                 dw              tank31c
  316.                 dw              tank31d
  317.                 dw              tank33a
  318.                 dw              tank33b
  319.                 dw              tank33c
  320.                 dw              tank33d
  321.                 dw              tank35a
  322.                 dw              tank35b
  323.                 dw              tank35c
  324.                 dw              tank35d
  325.                 dw              tank37a
  326.                 dw              tank37b
  327.                 dw              tank37c
  328.                 dw              tank37d
  329.                 dw              tank32a
  330.                 dw              tank32b
  331.                 dw              tank32c
  332.                 dw              tank32d
  333.                 dw              tank34a
  334.                 dw              tank34b
  335.                 dw              tank34c
  336.                 dw              tank34d
  337.                 dw              tank36a
  338.                 dw              tank36b
  339.                 dw              tank36c
  340.                 dw              tank36d
  341.                 dw              tank38a
  342.                 dw              tank38b
  343.                 dw              tank38c
  344.                 dw              tank38d
  345.  
  346.                 dw              0
  347.  
  348. maxmapX         dw              120    ; Logical maximum map dimensions
  349. maxmapY         dw              75
  350. lmapX           dw              0      ; Logical top left corner
  351. lmapY           dw              0      ; (lmapX, lmapY)
  352. pmaxX           dw              40     ; physical screen maximums
  353. pmaxY           dw              25
  354. pmapX           db              0      ; Physical top left corner of screen
  355. pmapY           db              0      ; (pmapX, pmapY)
  356. wsizeX          dw              20     ; Physical window size
  357. wsizeY          dw              12     ; (pmapX+wsizeX,pmapY+wsizeY)
  358.  
  359. jtable          dw              50   dup(0) ; Screen jump table to Y axis
  360. mapjtable       dw              100  dup(0) ; Map jump table to each Y axis
  361.  
  362. map             db              9000 dup(?) ; Map array, lists which tile
  363.                                             ; appears where.
  364.                                             ; Each entry is an index into
  365.                                             ; the imagelist file
  366.  
  367. scrbuf          db              16200 dup(?) ; Screen swap buffer
  368. SEPDATA ENDS
  369. _TEXT           SEGMENT BYTE PUBLIC 'CODE'
  370.  
  371.                 PUBLIC _drawtile
  372.                 PUBLIC _inittables
  373.                 PUBLIC _regenscr
  374.                 PUBLIC _refreshscr
  375.                 PUBLIC _gotocga
  376.                 PUBLIC _setlogXY
  377.                 PUBLIC _setphyXY
  378.                 PUBLIC _setwindXY
  379.                 PUBLIC _setmapXY
  380.                 PUBLIC _capturescr
  381.                 PUBLIC _getmapXY
  382.  
  383. _drawtile       proc
  384.                 push            bp
  385.                 mov             bp,sp
  386.                 push            ax
  387.                 push            bx
  388.                 push            si
  389.                 push            di
  390.                 push            ds
  391.                 push            es
  392.                 push            ax
  393.  
  394.                 mov             ax,OFFSET SEPDATA
  395.                 mov             ds,ax
  396.                 mov             es,ax
  397.  
  398.                 xor             ax,ax
  399.                 mov             al,dh
  400.                 mov             si,ax
  401.                 shl             si,1
  402.                 add             si,OFFSET jtable
  403.                 mov             di,[si]
  404.                 mov             al,dl
  405.                 shl             ax,1
  406.                 add             di,ax
  407.                 add             di,OFFSET scrbuf
  408.                 pop             ax
  409.                 push            di
  410.                 mov             si,ax
  411.                 mov             ax,80-2
  412. ; Even Lines
  413.                 movsb
  414.                 movsb
  415.                 add             di,ax
  416.                 movsb
  417.                 movsb
  418.                 add             di,ax
  419.                 movsb
  420.                 movsb
  421.                 add             di,ax
  422.                 movsb
  423.                 movsb
  424. ; Odd lines
  425.                 pop             di
  426.                 mov             bx,02000h
  427.                 add             di,bx
  428.                 movsb
  429.                 movsb
  430.                 add             di,ax
  431.                 movsb
  432.                 movsb
  433.                 add             di,ax
  434.                 movsb
  435.                 movsb
  436.                 add             di,ax
  437.                 movsb
  438.                 movsb
  439.                 pop             es
  440.                 pop             ds
  441.                 pop             di
  442.                 pop             si
  443.                 pop             bx
  444.                 pop             ax
  445.                 pop             bp
  446.                 ret
  447. _drawtile       endp
  448.  
  449. _inittables     proc
  450. ; Initilize the map table to 0 thru 8 alternately
  451.                 push            bp
  452.                 mov             bp,sp
  453.                 push            si
  454.                 push            cx
  455.                 push            ax
  456.                 push            ds
  457.  
  458.                 mov             ax,OFFSET SEPDATA
  459.                 mov             ds,ax
  460.  
  461.                 mov             si,OFFSET map
  462.                 mov             cx,9000
  463.                 mov             ax,0
  464. fillmap:        mov             [si],al
  465.                 inc             si
  466.                 inc             ax
  467.                 cmp             ax,9
  468.                 jnz             contloop
  469.                 mov             ax,0
  470. contloop:
  471.                 loop            fillmap
  472.  
  473. ; Let's initilize the jump table
  474.                 mov             si,OFFSET jtable
  475.                 mov             ax,0
  476.                 mov             cx,25
  477. filltable:
  478.                 mov             [si],ax
  479.                 add             ax,320
  480.                 inc             si
  481.                 inc             si
  482.                 loop            filltable
  483.  
  484. ; Fill up Map jump table for Y coordinates
  485.                 mov             si,OFFSET mapjtable
  486.                 mov             ax,0
  487.                 mov             cx,75
  488. ftable:         mov             [si],ax
  489.                 add             ax,[maxmapX]
  490.                 inc             si
  491.                 inc             si
  492.                 loop            ftable
  493.  
  494.                 pop             ds
  495.                 pop             ax
  496.                 pop             cx
  497.                 pop             si
  498.                 pop             bp
  499.                 ret
  500. _inittables     endp
  501.  
  502. _regenscr       proc
  503.                 push            bp
  504.                 mov             bp,sp
  505.                 push            si
  506.                 push            ax
  507.                 push            dx
  508.                 push            bx
  509.                 push            cx
  510.                 push            di
  511.                 push            es
  512.                 push            ds
  513.  
  514.                 cli
  515.                 mov             ax,OFFSET SEPDATA
  516.                 mov             ds,ax
  517.  
  518.                 mov             si,OFFSET mapjtable
  519.                 mov             ax,[lmapY]
  520.                 shl             ax,1
  521.                 add             si,ax
  522.                 mov             dx,[si]
  523.                 add             dx,[lmapX]
  524.                 mov             si,dx
  525.                 add             si,OFFSET map
  526.  
  527. ; SI now points to the first tile to be displayed at (pmapX,pmapY)
  528.  
  529.                 mov             bx,[wsizeY]   ; Do this Y times
  530.                 mov             dh,[pmapY]    ; init physical Y axis
  531. doY:
  532.                 mov             cx,[wsizeX]   ; Set up for nested loop
  533.                 mov             dl,[pmapX]    ; init physical X axis
  534.                 push            si
  535. doX:
  536.                 xor             ax,ax
  537.                 mov             al,[si]       ; Get first map char
  538.                 inc             si
  539.                 shl             ax,1
  540.                 mov             di,OFFSET imagelist
  541.                 add             di,ax
  542.                 mov             ax,[ds:di]    ; Get image pointer into DX
  543.  
  544.                 call            _drawtile     ; Draw the tile
  545.  
  546.                 inc             dl            ; Do next X
  547.  
  548.                 loop            doX
  549.  
  550.                 pop             si
  551.                 add             si,[maxmapX]
  552.                 inc             dh
  553.                 dec             bx
  554.                 jnz             doY           ; Do next Y
  555.  
  556.                 sti
  557.  
  558.                 pop             ds
  559.                 pop             es
  560.                 pop             di
  561.                 pop             cx
  562.                 pop             bx
  563.                 pop             dx
  564.                 pop             ax
  565.                 pop             si
  566.                 pop             bp
  567.                 ret
  568. _regenscr       endp
  569.  
  570. _gotocga        proc
  571.                 push            bp
  572.                 mov             bp,sp
  573.                 push            ax
  574.                 push            bx
  575.  
  576.                 mov             ah,0
  577.                 mov             al,4
  578.                 int             10h
  579.                 mov             ah,11
  580.                 mov             bl,0
  581.                 mov             bh,4
  582.                 int             10h
  583.  
  584.                 pop             bx
  585.                 pop             ax
  586.                 pop             bp
  587.                 ret
  588. _gotocga        endp
  589.  
  590. _setlogXY       proc
  591.                 push            bp
  592.                 mov             bp,sp
  593.                 push            ds
  594.  
  595.                 mov             ax,OFFSET SEPDATA
  596.                 mov             ds,ax
  597.                 mov             ax,[bp+4]
  598.                 mov             [lmapX],ax
  599.                 mov             ax,[bp+6]
  600.                 mov             [lmapY],ax
  601.  
  602.                 pop             ds
  603.                 pop             bp
  604.                 ret
  605. _setlogXY       endp
  606.  
  607. _setphyXY       proc
  608.                 push            bp
  609.                 mov             bp,sp
  610.                 push            ds
  611.  
  612.                 mov             ax,OFFSET SEPDATA
  613.                 mov             ds,ax
  614.                 mov             ax,[bp+4]
  615.                 mov             [pmapX],al
  616.                 mov             ax,[bp+6]
  617.                 mov             [pmapY],al
  618.  
  619.                 pop             ds
  620.                 pop             bp
  621.                 ret
  622. _setphyXY       endp
  623.  
  624. _setwindXY      proc
  625.                 push            bp
  626.                 mov             bp,sp
  627.                 push            ds
  628.  
  629.                 mov             ax,OFFSET SEPDATA
  630.                 mov             ds,ax
  631.                 mov             ax,[bp+4]
  632.                 mov             [wsizeX],ax
  633.                 mov             ax,[bp+6]
  634.                 mov             [wsizeY],ax
  635.  
  636.                 pop             ds
  637.                 pop             bp
  638.                 ret
  639. _setwindXY      endp
  640.  
  641. _setmapXY       proc
  642.                 push            bp
  643.                 mov             bp,sp
  644.                 push            ds
  645.                 push            si
  646.                 push            dx
  647.  
  648.                 mov             ax,OFFSET SEPDATA
  649.                 mov             ds,ax
  650.                 mov             si,OFFSET mapjtable
  651.                 mov             ax,[bp+6]
  652.                 shl             ax,1
  653.                 add             si,ax
  654.                 mov             dx,[si]
  655.                 add             dx,[bp+4]
  656.                 mov             si,dx
  657.                 add             si,OFFSET map
  658.                 mov             ax,[bp+8]
  659.                 cmp             ax,0
  660.                 jz              nope
  661.                 mov             [si],al
  662.  
  663. nope:           pop             dx
  664.                 pop             si
  665.                 pop             ds
  666.                 pop             bp
  667.                 ret
  668. _setmapXY       endp
  669.  
  670. _getmapXY       proc
  671.                 push            bp
  672.                 mov             bp,sp
  673.                 push            ds
  674.                 push            si
  675.                 push            dx
  676.  
  677.                 mov             ax,OFFSET SEPDATA
  678.                 mov             ds,ax
  679.                 mov             si,OFFSET mapjtable
  680.                 mov             ax,[bp+6]
  681.                 shl             ax,1
  682.                 add             si,ax
  683.                 mov             dx,[si]
  684.                 add             dx,[bp+4]
  685.                 mov             si,dx
  686.                 add             si,OFFSET map
  687.                 mov             ah,0
  688.                 mov             al,[si]
  689.  
  690.                 pop             dx
  691.                 pop             si
  692.                 pop             ds
  693.                 pop             bp
  694.                 ret
  695. _getmapXY       endp
  696.  
  697. _refreshscr     proc
  698.                 push            bp
  699.                 mov             bp,sp
  700.                 push            ds
  701.                 push            es
  702.                 push            si
  703.                 push            di
  704.                 push            cx
  705.  
  706.                 cli
  707.                 mov             ax,OFFSET SEPDATA
  708.                 mov             ds,ax
  709.  
  710.                 mov             ax,0B800h
  711.                 mov             es,ax
  712.                 mov             si,OFFSET scrbuf
  713.                 mov             cx,16192
  714.                 mov             di,0
  715.                 rep             movsb
  716.                 sti
  717.  
  718.                 pop             cx
  719.                 pop             di
  720.                 pop             si
  721.                 pop             es
  722.                 pop             ds
  723.                 pop             bp
  724.                 ret
  725.  
  726. _refreshscr     endp
  727.  
  728. _capturescr     proc
  729.                 push            bp
  730.                 mov             bp,sp
  731.                 push            ds
  732.                 push            es
  733.                 push            si
  734.                 push            di
  735.                 push            cx
  736.  
  737.                 cli
  738.                 mov             ax,OFFSET SEPDATA
  739.                 mov             es,ax
  740.  
  741.                 mov             ax,0B800h
  742.                 mov             ds,ax
  743.                 mov             si,0
  744.                 mov             cx,16192
  745.                 mov             di,OFFSET scrbuf
  746.                 rep             movsb
  747.                 sti
  748.  
  749.                 pop             cx
  750.                 pop             di
  751.                 pop             si
  752.                 pop             es
  753.                 pop             ds
  754.                 pop             bp
  755.                 ret
  756.  
  757. _capturescr     endp
  758.  
  759.  
  760.  
  761. _TEXT            ENDS
  762.  
  763.                  END
  764.